package com.lp.biz.member.mapper;

import com.lp.biz.member.model.entity.Member;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lp.biz.member.model.query.AdvisorQuery;
import com.lp.biz.member.model.query.NormalMemberQuery;
import com.lp.biz.member.model.query.TrainStudentQuery;
import com.lp.biz.member.model.query.TrainMemberQuery;
import com.lp.biz.member.model.vo.*;
import com.lp.biz.system.model.vo.Home;

import java.util.List;

/**
 * MemberMapper 接口
 * @program: backend
 * @author Ke.Song
 * @since 2024-05-03 11:30:02
 */
public interface MemberMapper extends BaseMapper<Member> {

    /**
     * 获取首页
     * @return 查询结果
     */
    Home getHome();

    /**
     * 获取普通用户列表
     * @param query 查询参数
     * @return 查询结果
     */
    List<NormalMemberList> getNormalMemberList(NormalMemberQuery query);

    /**
     * 获取共读会会员列表
     * @param query 查询参数
     * @return 查询结果
     */
    List<ReadingMemberList> getReadingMemberList(NormalMemberQuery query);

    /**
     * 获取训练营会员列表
     * @param query 查询参数
     * @return 查询结果
     */
    List<TrainStudentList> getTrainStudent(TrainStudentQuery query);

    /**
     * 获取管理列表
     *
     * @param query    查询参数
     * @param category 分类
     * @return 查询结果
     */
    List<TrainerMembersList> getTrainManageList(TrainMemberQuery query, String category);

    /**
     * 获取知识顾问列表
     * @param query 查询参数
     * @return 查询结果
     */
    List<AdvisorMemberList> getAdvisors(AdvisorQuery query);

    /**
     * 获取用户详情
     * @param memberId 用户id
     * @return 查询结果
     */
    MemberDetail getMemberDetail(Integer memberId);

    /**
     * 获取用户详情学习记录
     *
     * @param memberId 用户id
     * @return 查询记录
     */
    List<MemberStudyList> getStudyList(Integer memberId);

    /**
     * 获取用户详情活动记录
     *
     * @param memberId 用户id
     * @return 查询记录
     */
    List<MemberActivityList> getActivityList(Integer memberId);

    /**
     * 获取用户详情文章记录
     * @param memberId 用户id
     * @return 查询记录
     */
    List<MemberArticleList> getArticleList(Integer memberId);

}
